using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using ListasMusicales.Model;

namespace ListasMusicales.Controllers
{

    public class GestionListasController : Controller
    {
        //
        // GET: /GestionListas/

         ListasMusicalesEntities1 db = new ListasMusicalesEntities1();

        public ActionResult Index()
        {
            ViewData.Model = db.LISTA.ToList();
            return View();
        }


        public ActionResult Eliminar(int id)
        {

           var voto = (from n in db.VOTO 
                       where n.LISTA.ID == id
                       select n.ID).Count();

           if (voto == 0)
           {
               
               var lista = db.LISTA.First(m => m.ID == id);
               db.DeleteObject(lista);
               db.SaveChanges();
               return View("Eliminar");
           }
           else
               return View("ErrorEliminar");
        }

        //
        // GET: /GestionListas/Detalles

        public ActionResult Detalles(int id)
        {
            var detallesLista = db.LISTA.First(m => m.ID == id);
            ViewData.Model = detallesLista;
            return View();
        } 

        public ActionResult VerCanciones(int id){

            var canciones = from cancion in db.CANCION
                            join contenedor in db.CONTENEDOR_CANCIONES on cancion.ID equals contenedor.CANCION.ID
                            where contenedor.LISTA.ID == id
                            select cancion;

            ViewData.Model = canciones.ToList();
            return View();
            }


        //
        // GET: /GestionListas/Create

        public ActionResult Create()
        {
            return View();
        }

        public ActionResult Buscar()
        {
            return View();
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Buscar(LISTA lista)
        {



          /*  if (int.Equals(lista.ID, null))
                ModelState.AddModelError("ID", "El codigo de lista es obligatorio");
            if (String.IsNullOrEmpty(lista.NOMBRE))
                ModelState.AddModelError("NOMBRE", "El nombre de lista es obligatorio");
            if (String.IsNullOrEmpty(lista.MOTIVACION))
                ModelState.AddModelError("MOTIVACION", "La motivacion de lista es obligatorio");
            if (int.Equals(lista.DURACION, null))
                ModelState.AddModelError("DURACION", "La duracion de lista es obligatorio");
            if (DateTime.Equals(lista.FECHACREACION, null))
                ModelState.AddModelError("FECHACREACION", "La fecha de lista es obligatorio");


            if (ModelState.IsValid)
            {
                try
                {
                    var usuario = db.USUARIO.First(m => m.ID == 1);
                    lista.USUARIO = usuario;
                    db.AddToLISTA(lista);
                    db.SaveChanges();

                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }*/

            return View("NoEncontrado");

        }


        //
        // POST: /GestionListas/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(LISTA lista)
        {
            if (int.Equals(lista.ID, null))
                ModelState.AddModelError("ID", "El codigo de lista es obligatorio");
            if (String.IsNullOrEmpty(lista.NOMBRE))
                ModelState.AddModelError("NOMBRE", "El nombre de lista es obligatorio");
            if (String.IsNullOrEmpty(lista.MOTIVACION))
                ModelState.AddModelError("MOTIVACION", "La motivacion de lista es obligatorio");
            if (int.Equals(lista.DURACION, null))
                ModelState.AddModelError("DURACION", "La duracion de lista es obligatorio");
            if (DateTime.Equals(lista.FECHACREACION, null))
                ModelState.AddModelError("FECHACREACION", "La fecha de lista es obligatorio");


            if (ModelState.IsValid)
            {
                try
                {
                    var usuario = db.USUARIO.First(m => m.ID == 1);
                    lista.USUARIO = usuario;
                    db.AddToLISTA(lista);
                    db.SaveChanges();

                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }

            return View();
           
        }


        //
        // POST: /GestionListas/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
